正所谓:“工欲善其事,必先利其器”,在正式开始设计并开发我们的轻量级Java Web 框架之前,有必要掌握以下技能:
- 使用 IDEA 搭建并开发 Java 项目;
- 使用 Maven 自动化构建 Java 项目;
- 使用 Git 管理项目源代码;
使用 IDEA 创建 Maven 项目
创建 IDEA 项目
我们无需单独下载 Maven,更不用将其集成到 IDEA 中,因为 IDEA 默认已经将其整合了。在 IDEA 中创建 Maven 项目非常简单,只需要按照以下步骤进行即可:
- 单击 “Create New Project” 按钮,弹出 “New Project” 对话框。
- 选择 Maven 选项,单击 “Next” 按钮
- 输入 GroupId (org.smart4j)、ArtifactID(chapter1)、Version(1.0.0),单击 “Next” 按钮。
- 输入 Project name(chapter1)、Project location(C:\chapter1),单击 “Finish” 按钮。
这里需要说明的是,其中 GroupId 建议为网站域名的倒排方式,以便确保唯一性,类似于 Java 的包名。
按照以上操作,只需片刻之间,IDEA 就创建了一个基于 Maven 的目录结构,如图 所示。
调整 Maven 配置
当打开 Maven 项目配置文件(pom.xml)后,看到的应该是这样的配置:
1 |
|
以上只是 pom.xml 的基本配置,下面需要为它添加一些常用配置。
首先,需要统一源代码的编码方式,否则使用 Maven 编译源代码的时候就会出现相关警告。一般情况下,我们都使用 UTF-8 进行编码,需要添加的配置如下:
1 | ... |
除了需要统一源代码编码方式以外,还需要统一源代码与编译输出的JDK版本。由于书中使用 JDK1.6 进行的开发,因此需要如下配置:
1 | ... |
所有的 plugin 都需要添加到 build>plugins 标签下, Maven 插件或下文中所出现的 Maven 的依赖都来自于 Maven 中央仓库,可以通过以下链接访问:
如果说上面添加的两个配置是必需的,那么下面的这个配置应该就是可选的。如果在使用 Maven 打包时想要跳过单元测试,那么可以添加如下插件:
1 | <!-- Test --> |
至此,一个 Maven 项目就搭建完毕了,下面我们就要在这个项目中添加有关的 Java Web 的代码。
搭建 Web 项目框架
转为 Java Web 项目
目前,在 pom.xml 中还没有任何的 Maven 依赖(dependency),随后会添加一些 Java Web 所需的依赖,只不过在添加这些依赖之前,有必要先将这个 Maven 项目调整为 Web 项目结构。
提示:可以简单地将 Maven 理解为 jar 包,只不过 Maven 依赖具备传递性,只需配置某个依赖,就能自动获取该依赖的相关依赖。
只需要按照以下三步即可实现:
- File > Project Structure > Facets > + > Web > chapter1
- Deployment Descriptors > Edit > chapter1/src/main/webapp/WEB-INF/web.xml
- Web Resources Directories > Edit > chapter1/src/main/webapp
此时,IDEA 会自动生成 src/main/webapp/WEB-INF/web.xml 文件
至此,Java Web 项目创建完毕。实际上,使用 Servlet3.0+ 框架是可以省略 web.xml 文件的,因为 Servlet 无须再 web.xml 里配置,只需通过 Java 注解的方式来配置即可。
添加 Java Web 的 Maven 依赖
由于 Web 项目是需要打 war 包的,因此必须在 pom.xml 文件里设置 packaging 为 war(默认为 jar),配置如下:
1 | <packaging>war</packaging> |
接下来就需要添加 Java Web 所需的 Servlet、JSP、JSTL 等依赖了,添加如下配置:
1 | <dependencies> |
需要说明的是:
- maven 依赖的 “三坐标” (groupId、artifactId、version)必须提供。
- 如果某些依赖只需参与编译,而无须参与打包(例如,Tomcat 自带了 Servlet 与 JSP 所对应的 jar 包),可将其 scope 设置为 provided。
- 如果某些依赖只是运行时需要,但无需参与编译(例如,JSTL 的 jar 包),可将其 scope 设置为 runtime。
为了便于阅读 以下是 pom.xml 的完整代码
1 |
|
现在一个基于 Maven 的 Java Web 项目已搭建完毕,随后可进入具体的开发阶段。
学习任何技术,都需要从最容易入手的地方开始,下面我们利用一个简单的应用场景,一起学习 Servlet3.0+ 框架的使用方法。
编写一个简单的 Web 应用
编写 Servlet 类
我们要做的一件非常简单的事情:写一个 HelloServlet,接收 GET 类型的 /hello 请求,转发到 /WEB-INF/jsp/hello.jsp 页面,在 hello.jsp 页面上显示系统当前时间。
首先,需要在 Java 目录下,创建一个名为 org.smart4j.chapter1 的包
然后,在该包下创建一个 HelloServlet 的类,代码如下:
1 | package org.smart4j.chapter1; |
最后,我们需要为该类添加一些代码:
1 | package org.smart4j.chapter1; |
编写 JSP 页面
在 webapp 目录下创建 jsp 目录,并在该目录下创建 hello.jsp,编写如下代码。
1 | <%-- |
可见,我们使用了 JSTL 表达式来获取 HelloServlet 里传递过来的 currentTime 请求属性。
至此,所有代码编写完毕,我们就可以让这个 Web 应用跑起来!